package huisu;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 给定两个整数 n 和 k，返回范围 [1, n] 中所有可能的 k 个数的组合。
 *
 * 你可以按 任何顺序 返回答案。
 */
public class leetCode77_combine {

    List<List<Integer>> res = new ArrayList<>();  // 存储结果
    public List<List<Integer>> combine(int n, int k) {
       if(n == 0 || n < k) return res;
       List<Integer> trace = new ArrayList<>();
       build(n,k,trace,1);
       return res;
    }

    public void build(int n,int k,List<Integer> trace,int index){
        if(trace.size() == k){
            if(!res.contains(trace)){
                res.add(new ArrayList<>(trace));
                return;
            }
        }
        for (int i = index; i <= n; i++) {
            trace.add(i);
            build(n,k,trace,i + 1);
            trace.remove(trace.size() - 1);
        }

    }
}
